package DAO;

//import models.HorarioAsignatura;
import java.util.List;
import javax.persistence.Query;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;


public class HorarioAsignaturaDao {

    protected EntityManager em;
//    HorarioAsignatura ha = new HorarioAsignatura();

//    public HorarioAsignatura asociarAsignaturaHorario(Integer idAsignatura, Integer idHorario) {
//        EntityManagerFactory emf =
//                Persistence.createEntityManagerFactory("sischoolPU");
//        this.em = emf.createEntityManager();
//        ha.setIdAsignatura(idAsignatura);
//        ha.setIdHorario(idHorario);
//        em.getTransaction().begin();
//        em.persist(ha);
//        em.getTransaction().commit();
//        em.close();
//        emf.close();
//        return ha;
//    }

    public int validarCreacion(Integer idAsignatura, Integer idHorario) {
        int ok = 0;
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("sischoolPU");
        this.em = emf.createEntityManager();
        Query q = em.createQuery("SELECT ha FROM HorarioAsignatura ha WHERE ha.idHorario='" + idHorario + "' AND ha.idAsignatura='" + idAsignatura + "'");
        if (q.getResultList().isEmpty() == true) {
            ok = 0;
        } else {
            ok = 1;
        }
        em.close();
        emf.close();
        return ok;
    }

//    public HorarioAsignatura devolverAsignaturaHorario(Integer idAsignatura, Integer idHorario) {
//        int ok = 0;
//        EntityManagerFactory emf =
//                Persistence.createEntityManagerFactory("sischoolPU");
//        this.em = emf.createEntityManager();
//        Query q = em.createQuery("SELECT ha FROM HorarioAsignatura ha WHERE ha.idHorario='" + idHorario + "' AND ha.idAsignatura='" + idAsignatura + "'");
//        if (q.getResultList().isEmpty() == true) {
//            ok = 0;
//        } else {
//            ha = (HorarioAsignatura) q.getSingleResult();
//            ok = ha.getIdAsignatura();
//        }
//        em.close();
//        emf.close();
//        if (ok == 0) {
//            return null;
//        } else {
//            return ha;
//        }
//    }

//    public void desasociarAsignaturaHorario(HorarioAsignatura asigHora) {
//        EntityManagerFactory emf =
//                Persistence.createEntityManagerFactory("sischoolPU");
//        this.em = emf.createEntityManager();
//        Integer idHorario = asigHora.getIdHorario();
//        Integer idAsignatura = asigHora.getIdAsignatura();
//        Query q = em.createQuery("SELECT ha FROM HorarioAsignatura ha WHERE ha.idHorario='" + idHorario + "' AND ha.idAsignatura='" + idAsignatura + "'");
//        if (q.getResultList().isEmpty() == false) {
//            ha = (HorarioAsignatura) q.getResultList().get(0);
//            em.getTransaction().begin();
//            em.remove(ha);
//            em.getTransaction().commit();
//        }
//        em.close();
//        emf.close();
//    }

    /****
     * como probablemente me va a devolver los id de las asignaturas y eso para el usuario no es
     * facil de comprender lo mas probable es que haga un ciclo enviando el id de la asignatura y
     * que me devuelva el nombre de la asignatura
     * @param idHorario
     * @return
     */
    public List consultarAsignaturasAsociadas(Integer idHorario) {
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("sischoolPU");
        this.em = emf.createEntityManager();
        Query query = em.createQuery("SELECT ha.idAsignatura FROM HorarioAsignatura ha WHERE ha.idHorario='" + idHorario + "'");
//        List<HorarioAsignatura> lista = query.getResultList();
        em.close();
        emf.close();
//        return (lista);
        return null;
    }

    public EntityManager getEm() {
        return em;
    }

    public void setEm(EntityManager em) {
        this.em = em;
    }

    public void persist(Object object) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("sischoolPU");
        EntityManager em1 = emf.createEntityManager();
        em1.getTransaction().begin();
        try {
            em1.persist(object);
            em1.getTransaction().commit();
        } catch (Exception e) {
            e.printStackTrace();
            em1.getTransaction().rollback();
        } finally {
            em1.close();
        }
    }
}
